 /*******************************************************************************
  * Copyright (c) 2005 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
  * http://www.eclipse.org/legal/epl-v10.html
  *
  * Contributors:
  * IBM Corporation - initial API and implementation
  ******************************************************************************/

 package org.eclipse.core.commands.common;

 import java.util.Comparator ;

 import org.eclipse.core.internal.commands.util.Util;

 /**
  * Comparator for instances of <code>NamedHandleObject</code> for display to
  * an end user. The comparison is based on the name of the instances.
  *
  * @since 3.2
  */
 public class NamedHandleObjectComparator implements Comparator {

     /**
      * Compares to instances of NamedHandleObject based on their names. This is
      * useful is they are display to an end user.
      *
      * @param left
      * The first obect to compare; may be <code>null</code>.
      * @param right
      * The second object to compare; may be <code>null</code>.
      * @return <code>-1</code> if <code>left</code> is <code>null</code>
      * and <code>right</code> is not <code>null</code>;
      * <code>0</code> if they are both <code>null</code>;
      * <code>1</code> if <code>left</code> is not <code>null</code>
      * and <code>right</code> is <code>null</code>. Otherwise, the
      * result of <code>left.compareTo(right)</code>.
      */
     public final int compare(final Object left, final Object right) {
         final NamedHandleObject a = (NamedHandleObject) left;
         final NamedHandleObject b = (NamedHandleObject) right;

         String aName = null;
         try {
             aName = a.getName();
         } catch (final NotDefinedException e) {
             // Leave aName as null.
 }
         String bName = null;
         try {
             bName = b.getName();
         } catch (final NotDefinedException e) {
             // Leave bName as null.
 }

         return Util.compare(aName, bName);
     }
 }

